package cn.iocoder.yudao.module.trade.config.service;

import cn.iocoder.yudao.module.trade.config.dal.dataobject.TradeConfigDO;
import cn.iocoder.yudao.module.trade.config.vo.TradeConfigSaveReqVO;
import jakarta.validation.Valid;

import java.util.List;

/**
 * 交易中心配置 Service 实现类
 *
 * @author owen
 */
public interface TradeConfigService {

    /**
     * 更新交易中心配置
     *
     * @param shopId     店铺编号
     * @param reqVO 更新信息
     */
    void saveTradeConfig(Long shopId, @Valid TradeConfigSaveReqVO reqVO);

    /**
     * 获得交易中心配置
     *
     * @param id     编号
     * @return 交易中心配置
     */
    TradeConfigDO getTradeConfigById(Long id);

    /**
     * 获得交易中心配置
     *
     * @param shopId     店铺编号
     * @return 交易中心配置
     */
    TradeConfigDO getOrCreateTradeConfigByShopId(Long shopId);

    /**
     * 获得交易中心配置
     *
     * @param shopId     店铺编号
     * @return 交易中心配置
     */
    TradeConfigDO getTradeConfigFromCacheByShopId(Long shopId);

    /**
     * 获得交易中心配置列表
     *
     * @return 交易中心配置列表
     */
    List<TradeConfigDO> getTradeConfigList();

}
